/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package redinftel.formularios;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import redinftel.entidades.Amistad;
import redinftel.entidades.Lista;
import redinftel.entidades.Usuario;
import redinftel.sesiones.ListaAmigosFacadeRemote;
import redinftel.sesiones.ListaFacadeRemote;

/**
 *Clase que devuelve los amigos de mi lista que cumplen años
 * comparando su fecha de nacimiento con la fehca del sistema
 *@author Six Degrees Team
 */
@ManagedBean
@RequestScoped
public class CumpleañosBean {

    private static final String USUARIO = "usuario";
    private Usuario idUsuario;
    private Map<Usuario, Integer> cumpleanieros;
    private int numeroCumpleanieros;
    private int codigoError;
/*
 * devuelve el numero de mis amigos que cumplen años
 * comparando con la fecha del sistema.
 */
    public int getNumeroCumpleanieros() {

        cumpleanieros = new HashMap<Usuario, Integer>();
        FacesContext fctx = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fctx.getExternalContext().getSession(false);
        idUsuario = (Usuario) session.getAttribute(USUARIO);//aqui ya tengo el usuario de la sesion
        Collection<Amistad> amistades = idUsuario.getAmistadCollection();
        amistades.addAll(idUsuario.getAmistadCollection1());

        SimpleDateFormat df = new SimpleDateFormat("MM/dd");//convierto la el dia y el mes

        for (Amistad amistad : amistades) {
            Usuario amigo = new Usuario();
            if (amistad.getIdAmigo1() != idUsuario) {
                amigo = amistad.getIdAmigo1();
            } else if (amistad.getIdAmigo2() != idUsuario) {
                amigo = amistad.getIdAmigo2();
            }
            try {
                String fecha1 = df.format(amigo.getPerfil().getFechaNacimiento());
                String fecha2 = df.format(new Date());
                if (fecha1.equals(fecha2)) {//si su fecha de nacimeinto es igual al del dia actual del sistema
                    cumpleanieros.put(amigo, getEdad(amigo.getPerfil().getFechaNacimiento()));
                    numeroCumpleanieros++;
                }

            } catch (Exception e) {
            }
        }

        return numeroCumpleanieros;
    }
/**
 *
 * @param numeroCumpleanieros
 */
    public void setNumeroCumpleanieros(int numeroCumpleanieros) {
        this.numeroCumpleanieros = numeroCumpleanieros;
    }
/**
 *
 * @return el codigo de error que se usa para separar
 * los mensajes de error del controlador
 */
    public int getCodigoError() {
        return codigoError;
    }

    public void setCodigoError(int codigoError) {
        this.codigoError = codigoError;
    }
/*
 * devuelve al usuario que esta en la sesion
 */
    public static String getUSUARIO() {
        return USUARIO;
    }
/**
 *
 * @return el id de usuario
 */
    public Usuario getIdUsuarioCreador() {
        return idUsuario;
    }

    public void setIdUsuarioCreador(Usuario idUsuario) {
        this.idUsuario = idUsuario;
    }

    /** Creates a new instance of CumpleañosBean */
    public CumpleañosBean() {
          ChangeLocaleBean.cambiar();
    }

    public void setCumpleanieros(Map<Usuario, Integer> cumpleanieros) {
        this.cumpleanieros = cumpleanieros;
    }
    /*
     * obtengo la edad del usuario,restando el año de su fecha de nacimiento y la del año actual.
     */
/**
 *
 * @param fecha
 * @return la diferncia de la edad del sistema con la del amigo
 */
    public int getEdad(Date fecha) {

        SimpleDateFormat df = new SimpleDateFormat("yyyy");
        int anyoActual = Integer.parseInt(df.format(new Date()));
        int anyo = Integer.parseInt(df.format(fecha));
        return (anyoActual - anyo);
    }

    public Map<Usuario, Integer> getCumpleanieros() {

   
        return cumpleanieros;
    }
}
